package shujia.day09;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/*
    Iterator iterator() 迭代器，Collection集合的专用遍历方式


 */
public class CollectionDemo4 {
    public static void main(String[] args) {
        Collection c1 = new ArrayList();
        c1.add("hello");
        c1.add("world");
        c1.add("java");
        c1.add("hadoop");
        c1.add("redis");
        System.out.println("c1: " + c1);
        System.out.println("-------------------------");

        //调用方法获取迭代器对象
        Iterator iterator = c1.iterator(); //Iterator iterator = new Itr()
        // 遍历迭代器对象，就可以获取迭代器中的元素了
        // 我们点进Iterator观察发现，Iterator是一个接口，c1.iterator()结果一定是一个实现了Iterator接口的实现类对象
        // 要想使用迭代器对象中的方法，就去iterator()如何实现的。
        // 我们这里是借助了ArrayList子类创建的对象，去到ArrayList类中观察发现该方法返回的是一个new Itr()对象
        // 因为Itr类实现了Iterator接口，可以直接接收
        // 去Itr类中查找方法的实现，去使用并获取迭代器中的元素值
        // 我们发现Itr中有两个重要的方法：
        // hasNext()和next()
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
        while (iterator.hasNext()){
            Object o = iterator.next(); //Object o = "hello"
            String s = (String)o;
            System.out.println(s+": "+s.length());
        }




    }
}
